Présentation
Composants
Branchements
Code ESP32
Détection de présence statique PIR 360°
Un capteur PIR (Passive InfraRed) mesure la température sans contact.
- Si l'intrus s'arrète, il n'est plus détecté
- La température affecte la portée et la sensitivité
- Animaux, branches des arbres, ombres, coucher de soleil dans les feuilles sont détectés
- Une personne bien isolée ne sera pas détectée
- Détecte le jour comme la nuit
- Faible consommation par rapport à un capteur micro-ondes
- Donc plus adapté en intérieur
Détection: à 7 mètres max sur un angle de 120°. Cette distance est modifiable à l’aide du potentiomètre de droite.
Operating temperature: -15° to +70°
Poids: 5.87g
Voltage: 5V to 30V
Conso: 50μA
4 capteurs PIR (Passive InfraRed) permettent de définir 8 zones.

Un boitier avec 8 LEDs indique la position de l'intrus.
Le potentiomètre de gauche règle la temporisation: la durée pendant laquelle le détecteur HC-SR501 va laisser sa sortie à l’état haut une fois sa détection terminée. Entre 1 seconde et 7 minutes.
Exemple de code
Tutoriel
Attention! 8 LEDS = 8 pins GPIO + 4 PIR = 4 pins digital + Buzzer = 13 pins!
Pas sûr que l'ESP32-C3 convienne il n'a que 11 GPIO.
Composants
/* Test du Buzzer
VCC → 3.3V ou 5V
I/O → pin GPIO15
Gnd → Gnd */
#define BUZZER 15
void setup() {
tone(BUZZER, 500,300); // Émet un son à 500 Hz pendant 300 ms
delay(500);
tone(BUZZER, 1000,300); // Émet un son à 1000 Hz pendant 300 ms
delay(500);
tone(BUZZER, 1500,300); // Émet un son à 1500 Hz pendant 300 ms
delay(500);
noTone(BUZZER); // Silence après la série de sons
}
void loop() {}
/* Test du PIR HC-SR501 + LED
HC-SR501
VCC → 5V
borne du milieu → pin GPIO36
Gnd → Gnd
LED
borne longue → Gnd
borne courte → Résistance 220 ohms → GPIO23 */
#define PIR 36
#define LED 23
void setup() {
pinMode(PIR, INPUT);
pinMode(LED, OUTPUT);
Serial.begin(115200);
}
void loop() {
bool detec = digitalRead(PIR);
digitalWrite(LED, detec);
if (detec == HIGH) {
Serial.println("Detected!");
} else {
Serial.println("Monitoring...");
delay(500);
}
}
/* 4X HC-SR501 + 8X LEDs + Buzzer
Buzzer
VCC → 3.3V ou 5V
I/O → pin GPIO15
Gnd → Gnd
*/
#define BUZZER 15
#define PIRnord 36
#define PIRest 39
#define PIRsud 34
#define PIRouest 35
#define LEDnord 23
#define LEDnordest 22
#define LEDest 1
#define LEDsudest 3
#define LEDsud 21
#define LEDsudouest 19
#define LEDouest 18
#define LEDnordouest 5
void setup() {
pinMode(PIRnord , INPUT);
pinMode(PIRest , INPUT);
pinMode(PIRsud , INPUT);
pinMode(PIRouest, INPUT);
pinMode(LEDnord , OUTPUT);
pinMode(LEDnordest , OUTPUT);
pinMode(LEDest , OUTPUT);
pinMode(LEDsudest , OUTPUT);
pinMode(LEDsud , OUTPUT);
pinMode(LEDsudouest , OUTPUT);
pinMode(LEDouest , OUTPUT);
pinMode(LEDnordouest, OUTPUT);
}
void loop(){
bool nord = digitalRead(PIRnord);
bool est = digitalRead(PIRest);
bool sud = digitalRead(PIRsud);
bool ouest = digitalRead(PIRouest);
digitalWrite(LEDnord , LOW);
digitalWrite(LEDnordest , LOW);
digitalWrite(LEDest , LOW);
digitalWrite(LEDsudest , LOW);
digitalWrite(LEDsud , LOW);
digitalWrite(LEDsudouest , LOW);
digitalWrite(LEDouest , LOW);
digitalWrite(LEDnordouest, LOW);
bool detec = false;
if(nord==HIGH){
if(est==HIGH) {digitalWrite(LEDnordest , HIGH); detec=true;}
if(ouest==HIGH) {digitalWrite(LEDnordouest, HIGH); detec=true;}
if(est!=HIGH && ouest!=HIGH) {digitalWrite(LEDnord, HIGH); detec=true;}
}
if(sud==HIGH){
if(est==HIGH) {digitalWrite(LEDsudest, HIGH); detec=true;}
if(ouest==HIGH) {digitalWrite(LEDsudouest, HIGH); detec=true;}
if(est!=HIGH && ouest!=HIGH) {digitalWrite(LEDsud, HIGH); detec=true;}
}
if(nord!=HIGH && sud!=HIGH){
if(ouest==HIGH) {digitalWrite(LEDouest, HIGH); detec=true;}
if(est==HIGH) {digitalWrite(LEDest, HIGH); detec=true;}
}
if(detec){
tone(BUZZER, 500,300);
tone(BUZZER, 1000,300);
tone(BUZZER, 1500,300);
noTone(BUZZER);
}
delay(500);
}